#include "ZoneSystem.h"
#include <Game/World/Components/Zone.h>
#include <Game/EntityManager.h>
#include <Game/Entity.h>

using namespace Game;
using namespace World;
using namespace Systems;
using namespace Totem;

ZoneSystem::ZoneSystem(GameManager &gameMgr)
	: gameMgr(gameMgr), entityMgr(NULL)
{
	entityMgr = new EntityManager();
	Components::Zone::RegisterToFactory(entityMgr->getFactory());
}

ZoneSystem::~ZoneSystem()
{
	if(entityMgr)
		delete entityMgr;
}

Entity &ZoneSystem::createZone()
{
	Entity &zone = entityMgr->create();
	zone.addComponent<ZoneSystem>("Zone", *this);
	return zone;
}

void ZoneSystem::add(Components::Zone *zone)
{
	zones.push_back(zone);
}

void ZoneSystem::remove(Components::Zone *zone)
{
	for(U32 i = 0; i < zones.size(); i++)
	{
		if(zones[i] == zone)
		{
			zones[i] = zones.back();
			zones.pop_back();
			break;
		}
	}
}

void ZoneSystem::update(float dt)
{
	entityMgr->update(dt);
}
